使用 iTextSharp 進行 PDF 套版時,發現 CheckBox 的勾選樣式怎麼從 打勾 變成 打叉,一開始以為是範本檔設錯,確認後是 iTextSharp 版本的問題。
範本

程式產生的PDF

Google 後發現問題出在 iTextSharp 的版本上面,由於新專案安裝的版本是 5.5.12,
此版本的 SetField 方法,相對舊版本新增了一個 saveAppearance 參數(是否保存當前 PDF 的外觀顯示),如果未設定此參數,則會造成 CheckBox 和 RadioButton 的勾選樣式會和範本設定的不同。
public virtual bool SetField(string name, string value, bool saveAppearance);
將 CheckBox 和 RadioButton 用到 SetField 的地方都加上第三個參數,並且設為 true。
fields.SetField(item.Key, item.Value, true);
結果

測試其他版本,
5.5.4 以前的版本都正常,
5.5.5 開始出現此問題,但此版本沒有 saveAppearance 參數可以解決此問題,
5.5.7 之後才有 saveAppearance 參數,
所以除了 5.5.5 和 5.5.6 之外的版本都可以使用此方法解決此問題。
參考文章:
iTextSharp 5.5.6.0 Bug? check box tick mark changes
使用iTextSharp進行PDF檔案套版